package main

import (
	"fmt"
	"reflect"
)

type UserLocal struct {
	Id   int
	Name string
	Age  int
}

func main() {
	var num = 1.2
	var user = UserLocal{}
	var s = []int{1, 2, 4}
	//返回类型中元素的类型。例如数组元素的类型.
	//普通类型并不具备元素类型的概念。
	//go针对指针类型的变量提供了获取元素类型的功能，即xx类型的指针，其元素类型是xx
	fmt.Println(reflect.TypeOf(&num).Elem())
	fmt.Println(reflect.TypeOf(&user).Elem())
	//获取的切片的指针，所以元素类型是切片
	fmt.Println(reflect.TypeOf(&s).Elem())
	fmt.Println(reflect.TypeOf(s).Elem())
	//float64
	//main.UserLocal
	//[]int
	//int

	//以下获取值类习惯的元素类型和获取User实例的元素值，都会抛出异常.因为普通类型中没有元素这一概念。
	//fmt.Println(reflect.TypeOf(num).Elem())
	//fmt.Println(reflect.TypeOf(user).Elem())
}
